package cn.com.hhrcw.entity;

import cn.com.hhrcw.utils.AgeUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 个人基本信息
 * </p>
 *
 * @author jiangdong
 * @since 2020-11-03
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class PiInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.ID_WORKER_STR)
    private String id;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 创建人
     */
    private String createBy;

    /**
     * 更新人
     */
    private String updateBy;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 删除标识
     */
    private Boolean delFlag;

    /**
     * 所属部门
     */
    private String sysOrgCode;

    private String r1;

    /**
     * 民族
     * 使用时间： 2021/5/25 14:17
     * author 朱修轩
     */
    private String r2;

    /**
     * 身高
     * 使用时间： 2021/5/25 14:17
     * author 朱修轩
     */
    private String r3;

    /**
     * 体重
     * 使用时间： 2021/5/25 14:17
     * author 朱修轩
     */
    private String r4;

    /**
     * 驾驶证
     * 使用时间： 2021/5/25 14:17
     * author 朱修轩
     */
    private String r5;

    /**
     * 身份证号
     * 使用时间： 2021/5/25 14:17
     * author 朱修轩
     */
    private String r6;

    /**
     * 紧急联系人
     * 使用时间： 2021/5/25 14:17
     * author 朱修轩
     */
    private String r7;

    /**
     * 紧急联系方式
     * 使用时间： 2021/5/25 14:17
     * author 朱修轩
     */
    private String r8;

    private String r9;

    private String r10;

    /**
     * 用户名
     */
    private String username;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 性别0未设置 1男 2女
     */
    private Integer sex;

    /**
     * 出生日期
     */
    private Date birthday;

    /**
     * 户口所在地
     */
    private String homeTown;

    /**
     * 现居地
     */
    private String liveCity;

    /**
     * 0 职场人 1应届生  2在校生
     */
    private Integer idEntity;

    /**
     * 参加工作时间
     */
    private Date jobTime;

    /**
     * 电话
     */
    private String phone;

    private String political;

    /**
     * 工作经验
     */
    private Integer workYears;

    /**
     * 0 未婚 1已婚已育 2 已婚未育 3离异
     */
    private Integer maritalStatus;

    /**
     * 工作状态 0离职-随时到岗 1在职-月内到岗 2-在职考虑机会 3在职-暂不考虑
     */
    private Integer workState;

    /**
     * 用户id
     */
    private String userId;

    /**
     * 身份证正面照片id
     */
    @TableField("positive_fileId")
    private String positiveFileid;

    /**
     * 身份证反面照片id
     */
    @TableField("back_fileId")
    private String backFileid;

    /**
     * 身份证号
     */
    private String idNumber;

    /**
     * 头像文件id
     */
    private String photoId;

    /**
     * 姓名
     */
    private String name;

    /**
     * 身份
     * 0 求职者
     * 1 企业用户
     * 2 后台人员
     * 多个,分开
     */
    private String roleType;

    /**
     * 禁用标识 用户将无法投递任何岗位
     */
    private Boolean banFlag;

    /**
     * 职位
     */
    private String stationName;

    /**
     * 昵称
     */
    private String nickName;

    /**
     * 是否参加工作1参加0未参加
     */
    private Integer jobFlag;

    /**
     * 企业用户角色标识
     * 0-普通企业用户
     * 1-企业超级管理员
     */
    private Integer enRoleType;

    /**
     * 入党时间
     */
    private Date partyTime;

    /**
     * 外语水平(校招)
     */
    private String foreignLanguage;

    /**
     * 计算机水平(校招)
     */
    private String computerSkill;

    /**
     * 现居地详细地址
     */
    private String address;

    public Integer getAge() {
        if (this.birthday == null) {
            return null;
        }
        return DateUtil.ageOfNow(this.getBirthday());
    }

    /**
     * 工作经验
     *
     * @return
     */
    public Integer getWorkYears() {
        if (this.jobFlag != null && this.jobFlag == 1 && this.jobTime != null) {
            return AgeUtil.getAge(this.jobTime);
        }
        return 0;
    }
}
